package pgsql;

import base.impl.Reference;
import connection.ConnectionBean;
import dao.example.base.AbstractFactoryDAO;
import dao.example.base.DepartmentDAO;
import dao.example.base.DepartmentDTO;
import base.AvatarDTO;
import base.UsuarioDTO;

public class AvatarDTOImpl implements AvatarDTO {

	private int id;
	private String nombre;
	private int nivel;
	private int experiencia;
	private int energiaVida;
	private int energiaVidaAct;
	private int energiaMana;
	private int energiaManaAct;
	private int estamina;
	private int estaminaAct;
	private int dinero;
	private int dineroBanco;
	// AKI VA LA IMAGEN... PERO DEBO AVERIGUAR EL TIPO DE DATO QUE ES
	private int capacidadBolso;
	private int fuerza;
	private int destreza;
	private int inteligencia;
	private int peleaSinArma;
	private int expPeleaSinArma;
	private int arma;
	private int expArma;
	private int escudo;
	private int expEscudo;
	private int puntería;
	private int expPunteria;
	private int magia;
	private int expMagia;
	private int pesca;
	private int expPesca;
	private int minería;
	private int expMineria;
	private int herbologia;
	private int expHerbologia;
	private int mezcla;
	private int expMezcla;
	// Faltan las referencias a idUsuario, idRaza, idProfesion, idZona, idClan)
	private final Reference<UsuarioDTO> usuarioRef = new Reference<UsuarioDTO>();

	@Override
	public void init(ConnectionBean connectionBean) {
		// TODO Auto-generated method stub
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNivel(int nivel) {
		this.nivel = nivel;
	}

	public int getNivel() {
		return nivel;
	}

	public void setExperiencia(int experiencia) {
		this.experiencia = experiencia;
	}

	public int getExperiencia() {
		return experiencia;
	}

	public void setEnergiaVida(int energiaVida) {
		this.energiaVida = energiaVida;
	}

	public int getEnergiaVida() {
		return energiaVida;
	}

	public void setEnergiaVidaAct(int energiaVidaAct) {
		this.energiaVidaAct = energiaVidaAct;
	}

	public int getEnergiaVidaAct() {
		return energiaVidaAct;
	}

	public void setEnergiaMana(int energiaMana) {
		this.energiaMana = energiaMana;
	}

	public int getEnergiaMana() {
		return energiaMana;
	}

	public void setEnergiaManaAct(int energiaManaAct) {
		this.energiaManaAct = energiaManaAct;
	}

	public int getEnergiaManaAct() {
		return energiaManaAct;
	}

	public void setEstamina(int estamina) {
		this.estamina = estamina;
	}

	public int getEstamina() {
		return estamina;
	}

	public void setEstaminaAct(int estaminaAct) {
		this.estaminaAct = estaminaAct;
	}

	public int getEstaminaAct() {
		return estaminaAct;
	}

	public void setDinero(int dinero) {
		this.dinero = dinero;
	}

	public int getDinero() {
		return dinero;
	}

	public void setDineroBanco(int dineroBanco) {
		this.dineroBanco = dineroBanco;
	}

	public int getDineroBanco() {
		return dineroBanco;
	}

	public void setCapacidadBolso(int capacidadBolso) {
		this.capacidadBolso = capacidadBolso;
	}

	public int getCapacidadBolso() {
		return capacidadBolso;
	}

	public void setFuerza(int fuerza) {
		this.fuerza = fuerza;
	}

	public int getFuerza() {
		return fuerza;
	}

	public void setDestreza(int destreza) {
		this.destreza = destreza;
	}

	public int getDestreza() {
		return destreza;
	}

	public void setInteligencia(int inteligencia) {
		this.inteligencia = inteligencia;
	}

	public int getInteligencia() {
		return inteligencia;
	}

	public void setPeleaSinArma(int peleaSinArma) {
		this.peleaSinArma = peleaSinArma;
	}

	public int getPeleaSinArma() {
		return peleaSinArma;
	}

	public void setExpPeleaSinArma(int expPeleaSinArma) {
		this.expPeleaSinArma = expPeleaSinArma;
	}

	public int getExpPeleaSinArma() {
		return expPeleaSinArma;
	}

	public void setArma(int arma) {
		this.arma = arma;
	}

	public int getArma() {
		return arma;
	}

	public void setExpArma(int expArma) {
		this.expArma = expArma;
	}

	public int getExpArma() {
		return expArma;
	}

	public void setEscudo(int escudo) {
		this.escudo = escudo;
	}

	public int getEscudo() {
		return escudo;
	}

	public void setExpEscudo(int expEscudo) {
		this.expEscudo = expEscudo;
	}

	public int getExpEscudo() {
		return expEscudo;
	}

	public void setPuntería(int puntería) {
		this.puntería = puntería;
	}

	public int getPuntería() {
		return puntería;
	}

	public void setExpPunteria(int expPunteria) {
		this.expPunteria = expPunteria;
	}

	public int getExpPunteria() {
		return expPunteria;
	}

	public void setMagia(int magia) {
		this.magia = magia;
	}

	public int getMagia() {
		return magia;
	}

	public void setExpMagia(int expMagia) {
		this.expMagia = expMagia;
	}

	public int getExpMagia() {
		return expMagia;
	}

	public void setPesca(int pesca) {
		this.pesca = pesca;
	}

	public int getPesca() {
		return pesca;
	}

	public void setExpPesca(int expPesca) {
		this.expPesca = expPesca;
	}

	public int getExpPesca() {
		return expPesca;
	}

	public void setMinería(int minería) {
		this.minería = minería;
	}

	public int getMinería() {
		return minería;
	}

	public void setExpMineria(int expMineria) {
		this.expMineria = expMineria;
	}

	public int getExpMineria() {
		return expMineria;
	}

	public void setHerbologia(int herbologia) {
		this.herbologia = herbologia;
	}

	public int getHerbologia() {
		return herbologia;
	}

	public void setExpHerbologia(int expHerbologia) {
		this.expHerbologia = expHerbologia;
	}

	public int getExpHerbologia() {
		return expHerbologia;
	}

	public void setMezcla(int mezcla) {
		this.mezcla = mezcla;
	}

	public int getMezcla() {
		return mezcla;
	}

	public void setExpMezcla(int expMezcla) {
		this.expMezcla = expMezcla;
	}

	public int getExpMezcla() {
		return expMezcla;
	}

	@Override
	public UsuarioDTO getUsuarioDTORef() {
		if (usuarioRef.getRefValue() == null) {
			if (usuarioRef.getRefIdent() != 0) {
				try {
					// Lazy load the departmentDTORef
//					DepartmentDAO departmentDAO = (DepartmentDAO) AbstractFactoryDAO
//							.getFactoryDAO(). //
//							getDAO(DepartmentDAO.class, connectionBean);
//
//					departmentRef.setRefValue( //
//							(DepartmentDTO) departmentDAO
//									.loadById(departmentRef.getRefIdent()));

				} catch (Exception e) {
					e.printStackTrace();
					throw new RuntimeException(e);
				}
			}
		}

		return usuarioRef.getRefValue();
	}

	@Override
	public void setUsuarioDTORef(UsuarioDTO usuarioDTORef) {
		this.usuarioRef.setRefValue(usuarioDTORef);

	}

	@Override
	public Reference<UsuarioDTO> getUsuarioRef() {
		return usuarioRef;
	}

}
